package com.casic.common.base.dao;

import java.util.List;
import java.util.Map;

/**
 * 基础Dao(还需在XML文件里，有对应的SQL语句)
 * 
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2016年9月18日 上午9:31:36
 */
public interface BaseDao<T> {
	/**
	 * 保存实体
	 * @param t
	 */
	void save(T t);

	/**
	 * 保存实体（map参数）
	 * @param map
	 */
	void save(Map<String, Object> map);

	/**
	 * 批量新增数据
	 * @param list
	 */
	void saveBatch(List<T> list);

	/**
	 *  修改实体
	 * @param t
	 * @return
	 */
	int update(T t);

	/**
	 * 修改实体（map参数）
	 * @param map
	 * @return
	 */
	int update(Map<String, Object> map);

	/**
	 * id 删除数据
	 * @param id
	 * @return
	 */
	int delete(Object id);

	/**
	 *  删除数据（map参数）
	 * @param map
	 * @return
	 */
	int delete(Map<String, Object> map);

	/**
	 * 批量删除数据
	 * @param id
	 * @return
	 */
	int deleteBatch(Object[] id);

	/**
	 * id 查询详情
	 * @param id
	 * @return
	 */
	T queryObject(Object id);



	/**
	 * 分页查询（Map参数）
	 * @param map
	 * @return
	 */
	List<T> queryListByPage(Map<String, Object> map);

	/**
	 * 分页查询
	 * @param id
	 * @return
	 */
	List<T> queryList(Object id);

	/**
	 * 查询总条数（Map参数）
	 * @param map
	 * @return
	 */
	int queryTotal(Map<String, Object> map);

	/**
	 * 查询总条数
	 * @return
	 */
	int queryTotal();

	/**
	 * 按照实体删除
	 * @param entity
	 * @return
	 */
	int deleteById(T entity);

	/**
	 *  按照ids删除
	 * @param params
	 * @return
	 */
	int deleteByIds(Map<String, Object> params);

	/**
	 * 按照参数查询数据
	 * @param params
	 * @return
	 */
	List<T> queryList(Map<String, Object> params);

}
